/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package szerelomuhelynyilvantartas;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 *
 * @author csatari
 */
public final class MunkafolyamatMenü extends JFrame implements TételMenü{
    private Munkafolyamat munkafolyamat = null;
    int munkalapIndex;
    int munkafolyamatIndex=-1;
    JLabel óradíj = new JLabel();
    JLabel ár = new JLabel();
    JButton ok = new JButton("Ok");
    JTextField idő = new JTextField("0",3);
    DefaultComboBoxModel<String> c = new DefaultComboBoxModel<>();
    JComboBox<String> szerelőLista = new JComboBox<>(c);
    public MunkafolyamatMenü(int munkalapIndex) {
        this.munkalapIndex = munkalapIndex;
        rajzolMenü();
    }
    public MunkafolyamatMenü(int munkalapIndex, Munkafolyamat munkafolyamat, int munkafolyamatIndex) {
        this.munkafolyamat = munkafolyamat;
        this.munkalapIndex = munkalapIndex;
        this.munkafolyamatIndex = munkafolyamatIndex;
        rajzolMenü();
        adatBeállítás();
    }
    @Override
    public void rajzolMenü() {
        for(Szerelő szerelő : SzereloMuhelyNyilvantartas.szerelők) {
            c.addElement(szerelő.getNév());
        }
        if(munkafolyamat!=null) {
            setTitle("Munkafolyamat szerkesztése");
        }
        else {
            setTitle("Új munkafolyamat");
        }
        setSize(new Dimension(200, 175));
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout(10,0));
        
        JPanel centerPanel = new JPanel();
        centerPanel.setLayout(new GridLayout(0,2));
        centerPanel.setPreferredSize(new Dimension(100,200));
        
        centerPanel.add(new JLabel("Szerelő:"));
        centerPanel.add(szerelőLista);
        centerPanel.add(new JLabel("Idő:"));
        centerPanel.add(idő);
        centerPanel.add(new JLabel("Óradíj:"));
        centerPanel.add(óradíj);
        centerPanel.add(new JLabel("Ár:"));
        centerPanel.add(ár);
        JLabel főcím = new JLabel("Munkafolyamat");
        szerelőLista.addActionListener(new SzerelőListListener());
        idő.addKeyListener(new FrissítListener());
        főcím.setAlignmentX(Component.CENTER_ALIGNMENT);
        panel.add(főcím,BorderLayout.PAGE_START);
        ok.addActionListener(new HozzáadListener());
        panel.add(ok,BorderLayout.PAGE_END);
        panel.add(centerPanel,BorderLayout.CENTER);
        
        add(panel);
        szerelőLista.setSelectedIndex(0);
    }
    @Override
    public void adatBeállítás() {
        if(munkafolyamatIndex != -1) {
            String szerelőNév = munkafolyamat.getSzerelő().getNév();
            for(int i=0;i<SzereloMuhelyNyilvantartas.szerelők.size();i++) {
                if(SzereloMuhelyNyilvantartas.szerelők.get(i).getNév().equals(szerelőNév)) {
                    szerelőLista.setSelectedIndex(i);
                    break;
                }
            }
            idő.setText(Integer.toString(munkafolyamat.getSzerelésiIdő()));
            óradíj.setText(Integer.toString(munkafolyamat.getSzerelő().getÓradíj()));
            ár.setText(Integer.toString(munkafolyamat.getÁr()));
        }
    }
    private class HozzáadListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int időMent;
            try {
                időMent = Integer.parseInt(idő.getText());
                if(időMent < 0) {
                    időMent = 0;
                }
            }
            catch(NumberFormatException ex) {
                időMent = 0;
            }
            Szerelő szerelőMent = SzereloMuhelyNyilvantartas.szerelők.get(szerelőLista.getSelectedIndex());
            if(munkafolyamat == null) {
                munkafolyamat = new Munkafolyamat(időMent,szerelőMent);
                SzereloMuhelyNyilvantartas.munkalapok.get(munkalapIndex).hozzáad(munkafolyamat);
            }
            else {
                munkafolyamat.setIdő(időMent);
                munkafolyamat.setSzerelő(szerelőMent);
                SzereloMuhelyNyilvantartas.munkalapok.get(munkalapIndex).setTétel(munkafolyamatIndex, munkafolyamat);
            }
            dispose();
        }
    }
    private class SzerelőListListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            Szerelő kiválasztott = SzereloMuhelyNyilvantartas.szerelők.get(szerelőLista.getSelectedIndex());
            óradíj.setText(kiválasztott.getÓradíj()+" Ft");
            try {
                if(Integer.parseInt(idő.getText()) >= 0) {
                    ár.setText(kiválasztott.getÓradíj()*Integer.parseInt(idő.getText())+" Ft");
                } 
                else {
                    ár.setText("0 Ft");
                }
                    
            }
            catch(NumberFormatException ex) {
                ár.setText("0 Ft");
            }
        }
    }
    private class FrissítListener implements KeyListener {
        @Override
        public void keyTyped(KeyEvent e) {
        }

        @Override
        public void keyPressed(KeyEvent e) {
        }

        @Override
        public void keyReleased(KeyEvent e) {
            szerelőLista.setSelectedIndex(szerelőLista.getSelectedIndex());
        }
        
    }
    
    
}
